Project Policies
         
            
         
Each student must complete an individual (i.e., not group) final
project.  In general, final projects must use OpenGL. 
  
            1 Topics
  The following projects have been pre-approved: If you would like to
  work on a project that is not listed below, you must get it
  approved.
    
               1.1 Science, Technology, Engineering and Math
               
                  
                     
                        | 
                           Molecular Modeler
                         | 
                        
        An application that displays 3D models of simple chemical compounds.
	The user must be able to rotate the model in all three dimensions.
	Bonds can be shown either as a "wireframe" or as 3D cylinders.
       | 
                     
                     
                        | 
                           Virtual Worm
                         | 
                        
        A 3D model of a worm that the user can "dissect".
       | 
                     
                     
                        | 
                           Packet-Switched Network Simulation
                         | 
                        
        A 3D visualization of the routing of packets in a
        packet-switched network.  The model must be able to:
        read a network from a file, use a resonable routing algorithm, and
	simulated dropped packets.  The visualization must show (in 
	less-than-real-time) the movement of packets.  The packets must
	be color coded based on their destination.
       | 
                     
                     
                        | 
                           Articulated Robot Arm Simulator
                         | 
                        
        A simulation of an articulated robot arm that has four degrees
	of freedom.
       | 
                     
                     
                        | 
                           Visualization of Optimization Algorithms
                         | 
                        
        A visualization of one (or more) numerical algorithms for solving 
        optimization problems with two decision variables. The visualization
        must include a 3D representation of the function to optimize and the
        iterations of the algorithm.
       | 
                     
                     
                        | 
                           Bouncing Ball Simulation
                         | 
                        
        A realistic 3D simulation of a bouncing ball in which the ball deforms
        when it strikes the floor and returns to its original shape after it
        rises up off of the floor.
       | 
                     
                  
                
             
            
               1.2 James Madison University
               
                  
                     
                        | 
                           Campus Terrain Model
                         | 
                        
        An application that displays a 3D model of the terrain of the campus
	(the data must be accurate; they are available from several sources)
        and allows users to click on two points and find the distance between
        them, including the total change in elevation.
       | 
                     
                     
                        | 
                           Animated Duke Dog
                         | 
                        
        A 3D model of the Duke Dog that walks around the screen,
        following the mouse.
       | 
                     
                     
                        | 
                           CS Department Walk Thru
                         | 
                        
        An accurate 3D model of the second floor of the CS/ISAT
        building with all offices, classrooms, etc... that the user
        can "walk though" (using a first-person perspective).
       | 
                     
                  
                
             
            
               1.3 Games
               
                  
                     
                        | 
                           3D Space Cubes
                         | 
                        
        A variant of the classic Asteroids games in which the asteroids
        are 3D cubes (that break-up into smaller cubes) and the ship
        is a 3D cone or pyramid.  All objects must move in all three
        dimensions.  Objects that leave the screen must not return from
        the opposite face.
       | 
                     
                     
                        | 
                           3D Brick Basher
                         | 
                        
        A variant of the classic Breakout game in which the bricks, ball,
        and paddle are all 3D objects.  The paddle must be able to move
	in both the \([1, 0, 0]\) and \([0, 0, 1]\) directions
	and the ball must move in all three dimensions.
       | 
                     
                     
                        | 
                           3D Paddle Ball
                         | 
                        
        A first-person paddle ball game in which the ball travels
	principally in the \([0, 0, 1]\) direction.
	The application must support both one-player (against the
	computer) and two-player modes.  Each player must have his/her
	own window.  The player must be able to move in both the 
        \([1, 0, 0]\) and \([0, 0, 1]\) directions.
       | 
                     
                     
                        | 
                           3D First Person Snakes and Ladders Game
                         | 
                        
        A 3D variant of the classic games
        
	Snakes and Ladders.  In this version, each player has a
        first person view of the board from the perspective of her/his
        token.
       | 
                     
                  
                
             
            
               1.4 The Visual and Performing Arts
               
                  
                     
                        | 
                           3D Music Notation
                         | 
                        
        An application that can display a simple musical score in 3D.
        Notes, the staff, etc... must all be 3D objects.  The user
        must be able to rotate the score and manipulate the individual
        notes (e.g., move them up and down the staff, add flats/sharps, change
        their length).
       | 
                     
                     
                        | 
                           Theater Lighting Simulation
                         | 
                        
        An application that allows the user to experiment with different
        lighting setups.
       | 
                     
                  
                
             
            
               1.5 The Social Sciences
               
                  
                     
                        | 
                           U.S. Census Data Viewer
                         | 
                        
        An application that allows users to draw 3D maps of the
	United States in which the "height" of each state is determined by
        socio-economic data (e.g., population density, median income,
        housing starts).
       | 
                     
                     
                        | 
                           Trade Data Viewer
                         | 
                        
        An application that allows users to draw network representations of
        international/interregional trade data.  The size of the link
	must be used to represent the volume of trade and the size of the
	node must be used to represent the size of the region's/country's
        economy.  The application must be animated to show the changes
	in these values over time.
       | 
                     
                  
                
             
            
               1.6 The Humanities
               
                  
                     
                        | 
                           3D Lexis Pencil Tool
                         | 
                        
        An application that allows users to create and display
        event histories using 3D Lexis Pencils
       | 
                     
                     
                        | 
                           3D Book Simulation
                         | 
                        
        An application that displays the text from any book on an
	animated "simulated book".  The user must be able to open the
	book and turn pages.  It must also be possible to "program"
	the book to flip through its pages at a pre-determined rate.
       | 
                     
                  
                
             
          
         
            
2 Proposal Approval
  If you do not want to work on one of the pre-approved projects above,
  you must get your project approved in advance.
  You must submit a brief (i.e., approximately one page), typed proposal
  that includes the requirements for the application.
  
         
            3 Collaboration
  You must write the code 
entirely on your own.
  
  You may request help on general topics from other students 
  and friends.  You may also discuss the assignment itself with 
  other students in the course.  However, when writing the actual code, you
  must do all of the work yourself.
  
          
         
            
4 Materials
            All code, pictures and sounds must be original (i.e.,
  do not plagiarize and do not infringe on any copyrights).  You may
  use code developed/used for lectures or assignments.
  
         
            
5 Recommended Approach
  You should probably use a SCRUM-like process even though you are
  working alone. That is, you should probably always have a working
  version of the product (regardless of how simple) and add features
  over time. Do not spend an inordinate amount of time designing the
  product and/or attempt to implement all of the features at once.
  
         
            
6 Presentations
  All students must give a "formal", 5 minute
  presentation of the final product on the "due date". This presentation should
  include a discussion of the design and implementation of the product as
  well as a demonstration of the product.
  
         
            7 Submissions
  You must submit 
ALL materials associated with your
  project on the "due date".  
  
  These materials must be submitted via Canvas in a .zip file.
  The root directory of the .zip file must
  contain a file named readme.txt that explains
  both how to:
  
            
               - Build the application.
    
 
               - Run the application.
    
 
            
            
  All code and documentation written for the final project must
  conform to the course style guides.  Submissions that do not
  conform to the course style guide and/or the above guidelines will
  not be accepted.
            
          
         
            
8 Grading
  Projects  will be evaluated primarily based on
  their technical merit (i.e., aesthetic issues will only have a
  minor impact on grades).  That is, the purpose of the project is to give
  you the opportunity to demonstrate that you understand and can use OpenGL.